/*
 * @Author: GL
 * @Date: 2022-12-30 17:45:10
 * @LastEditors: GL
 * @LastEditTime: 2023-04-08 22:14:26
 * @Description: 商品信息管理
 */
// 导入数据库操作模块
const db = require("../db/index")

// 获取商品列表
exports.getGoodsList = (req,res) => {
  // const gsql = `select * from product p INNER JOIN users u on p.create_by=u.id order by p.indate desc`
  const gsql = `select * from product p order by p.indate desc`
  db.query(gsql, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.send(err)
  
    // 2. 执行 SQL 语句成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
      data: results,
    })
  })
}

// 获取优惠商品列表
exports.preferentialList = (req,res) => {
  const lsql = `select * from product p INNER JOIN users u on is_delete=0 and p.create_by=u.id where p.radom>=3 order by p.indate desc`
  db.query(lsql, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.send(err)
  
    // 2. 执行 SQL 语句成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
      data: results,
    })
  })
}
//获取商品详情
exports.productDetailInfo = (req,res) => {
  const dsql = `SELECT * FROM product p INNER JOIN users u ON p.create_by = u.id WHERE p.product_id = ?`
  db.query(dsql,req.body.id,(err, results) => {
    // SQL 语句执行失败
    if (err) return res.send(err)

    // SQL 语句执行成功，但是影响行数不等于 1
    if (results.affectedRows !== 1) return res.send('获取失败！')

    // 获取成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
      data: results,
    })
  })
}
// 获取推荐商品列表
exports.recommendList = (req,res) => {
  const rsql = `select * from product p INNER JOIN users u on is_delete=0 and p.create_by=u.id where p.radom<3 order by p.indate desc`
  db.query(rsql, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.send(err)
  
    // 2. 执行 SQL 语句成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
      data: results,
    })
  })
}

// TODO 添加商品
// 获取当前时间
const time = new Date()
exports.addGoods = (req,res) => {
  const asql = `insert into product set product_name=?,price=?,product_spec=?,radom=?,cate=?,
    product_grade=?,img=?,shelf_life=?,descript=?,indate=?,create_by=?`
  db.query(asql,[req.body.name, req.body.price, req.body.spec, req.body.radom, req.body.cate, req.body.grade, req.body.img, req.body.shelf, req.body.desc, time, req.auth.id],(err,results) => {
    // SQL 语句执行失败
    if (err) return res.send(err)

    // SQL 语句执行成功，但是影响行数不等于 1
    if (results.affectedRows !== 1) return res.send('发布失败！')

    // 发布成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
    })
  })
}

// 商品删除
exports.removeGoods = (req, res) => {
  const dsql = `update product set is_delete=1 where product_id=?`
  db.query(dsql, req.params.id, (err, results) => {
    // SQL 语句执行失败
    if (err) return res.send(err)

    // SQL 语句执行成功，但是影响行数不等于 1
    if (results.affectedRows !== 1) return res.send('删除失败！')

    // 删除商品
    res.send({
      status: 0,
      message: '商品删除成功',
      data: results,
    })
  })
}

// 获取个人发布产品
exports.getUserList = (req,res) => {
  const usql = `select * from product where create_by=? order by indate desc`
  db.query(usql,req.auth.id,(err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.send(err)
  
    // 2. 执行 SQL 语句成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
      data: results,
    })
  })
}
// 进行商品搜索
exports.searchGoods = (req,res) => {
  const ssql = `select * from product where cate like '%${req.body.name}%'`
  db.query(ssql,(err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.send(err)
  
    // 2. 执行 SQL 语句成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
      data: results,
    })
  })
}

// TODO 商品类别检索
/**
 * @params 商品类别
 */
exports.cateList = (req,res) => {
  const csql = `select * from product p INNER JOIN users u on is_delete=0 and p.create_by=u.id where p.cate=? order by p.indate desc`
  db.query(csql,req.query.cate, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.send(err)
  
    // 2. 执行 SQL 语句成功
    res.send({
      status: 0,
      message: '获取商品信息成功',
      data: results,
    })
  })
}